Awesome Plotters
      
    
    
      A curated list of code and resources for computer-controlled drawing
      machines and other visual art robots.
    
    Contents
    
    Hardware
    Plotters
    
    Motor Controllers
    
      - 
        grblShield - All
        the stepper motor control hardware needed to turn an
        Arduino into a G-code-based motion
        controller using the grbl firmware. (adafruit)
      
 
      - 
        TinyG - More featureful
        and robust 6-axis G-code-based motion control hardware. (adafruit)
      
 
      - 
        Arduino CNC Shield
        - Grbl-compatible stepper motor control shield for Arduino, similar to
        the grblShield.
      
 
      - 
        Raspberry Pi CNC Hat
        - Raspberry Pi add-on board w/ stepper controllers and a microcontroller
        running grbl. Interfaces with the Pi’s serial pins.
      
 
    
    Accessories
    
      - 
        WiFi232 - Wifi to
        RS-232 serial via a DB25 plug. Control your serial plotter wirelessly.
      
 
      - 
        Plotter Cable Pinout
        - Schematic for a plotter cable that will work for most HP and Roland
        plotters. Search eBay or Amazon for
        
DB9 to DB25 Serial Null Modem Cable or similar to find them
        for sale.
       
    
    Pens
    
    Software
    HPGL
    
      HPGL is a serial/text-based protocol used by most old pen plotters, and
      even many new vinyl cutters.
    
    
      - 
        Chiplotle - Python
        library for generating HPGL and interfacing with serial plotters.
      
 
      - 
        Chiplotle on Parallel Port
        - Tweak of Chiplotle to work with a parallel port connection.
      
 
      - 
        HPGL Reference Guide
        - HTML-based HPGL Reference.
      
 
      - 
        HP 7475A Interfacing and Programming Manual
        - Scanned PDF manual that contains a full HPGL reference.
      
 
      - 
        djipco/hpgl - A Node.js
        library to communicate with HPGL-compatible plotters and printers.
      
 
      - 
        hp2xx - GNU tool to
        convert HPGL into other vector and raster formats. Can also be used as a
        previewing in X11.
      
 
      - 
        vec - Example C
        code for generating HPGL, with a turtle graphics interface.
      
 
      - 
        d3-hpgl - An adapter
        for the HTML Canvas API so you can output HPGL using the popular
        D3 library.
      
 
      - 
        HPGL Viewer - An
        HPGL Viewer using JavaScript and HTML5 canvas.
      
 
      - 
        HPGL Sender - A web
        interface for previewing HPGL and sending it to your plotter.
      
 
      - 
        HPGLGraphics - A
        Processing library for writing HPGL files.
      
 
    
    G-code
    
      G-code is a text-based standard for controlling CNC machines. Though it
      was designed for industrial machines, its use in many hobbyist 3d printer
      firmwares has made it ubiquitous in small-scale DIY projects as well.
    
    
      - 
        grbl - A high-performance
        G-code interpreting firmware for the Atmega 328 microcontroller and
        Arduino.
      
 
      - 
        cncjs - A web-based
        interface controlling CNC machines running grbl, TinyG, or other
        G-code-based firmware.
      
 
      - 
        node-gcode -
        Node.js-based G-code interpreter and simulator.
      
 
      - 
        svg2gcode - Node.js-based
        command line utility for converting SVG to G-code.
      
 
      - 
        svg2gcode -
        Python-based utility for fast SVG to G-code conversion.
      
 
      - 
        jscut - A web-based utiltity for
        converting SVG to G-code.
      
 
      - 
        Universal-G-Code-Sender
        - Java-based grbl-compatible cross-platform G-code sender.
      
 
      - 
        ChiliPeppr Hardware Fiddle - Modular
        web-based workspaces to visualize G-code and control hardware.
      
 
      - 
        gcode-generative-for-processing
        - Processing library, aiming to create gcode from simple shapes.
        (Designed for usage with the Creality CR10)
      
 
    
    Plotter-Specific
    Software that is specific to a particular plotter or controller.
    
      - 
        axidraw - Official
        AxiDraw extensions for Inkscape.
      
 
      - 
        axi - Unofficial Python
        library for the AxiDraw v3.
      
 
      - 
        xy - Utilities for the
        Makeblock XY Plotter Robot Kit.
      
 
      - 
        LaserGRBL -
        Laser-optimized Windows GUI for grbl controllers. Could be repurposed
        for DIY pen plotters that use a solenoid for pen up/down movements.
      
 
      - 
        Line-us Inkscape Plugin
        - Sends drawings to the
        Line-us plotter directly from
        Inkscape.
      
 
      - 
        Line-us API Examples
        - Example code for the
        Line-us plotter’s G-code-based
        API.
      
 
      - 
        [@beardicus/line-us](https://github.com/beardicus/line-us) - JavaScript library for
        controlling the Line-us machine
        from Node or the browser.
      
 
      - 
        PenPlotter -
        Polargraph controller that uses repetier firmware.
      
 
      - 
        Makelangelo-firmware
        - Firmware for the Makelangelo polargraph robot.
      
 
      - 
        RoboPaint - Software
        for the WaterColorBot.
      
 
      - 
        AxiTurtle -
        Turtle graphics for AxiDraw in Processing.
      
 
      - 
        GRBL-Plotter -
        Plotter-optimized Windows GUI for grbl controller with SVG and DXF
        import, and flexible pen up/down control.
      
 
      - 
        saxi - Driver and library
        for the AxiDraw. Uses constant-acceleration motion planning and
        automatically resizes to paper.
      
 
      - 
        MP2300-Tools -
        Software for converting HPGL to Graphtec’s GPGL format, as well as CAD
        files for a Graphtec plotter pen adapter.
      
 
    
    Vector Creation
    
      Tools to create vector artwork from scratch or by conversion from other
      formats.
    
    
      - 
        Inkscape - Popular cross-platform
        open source vector graphics editor.
      
 
      - 
        p5.js - “JavaScript library that makes
        coding accessible for artists, designers, educators, and beginners”.
      
 
      - 
        Paper.js - “The Swiss Army Knife of
        Vector Graphics Scripting”.
      
 
      - 
        ln - Vector-based 3D
        renderer written in Go.
      
 
      - 
        autotrace -
        Converts bitmap images to vector graphics.
      
 
      - 
        stipplegen -
        Creates interesting stippled drawings from bitmap images. (blog post)
      
 
      - 
        SquiggleDraw
        - “SquiggleDraw will create a SVG file from an image, using the
        brightness to change the amplitude of sine waves”.
      
 
      - 
        svgurt - Web-based PNG to SVG creative
        noodler.
      
 
      - 
        maptrace - Produce
        watertight polygonal vector maps by tracing raster images.
      
 
      - 
        Drawbot_image_to_gcode_v2
        - Creates G-code for use on drawbots.
      
 
      - 
        blackstripes
        - Turns a PNG image into a SVG line drawing.
      
 
      - 
        Ribbon - Ribbon
        diagrams of proteins in written in Go.
      
 
      - 
        penplot - A
        development environment for plotter art in JavaScript.
      
 
      - 
        penkit - A Python library
        for creating line-based SVG graphics.
      
 
      - 
        generativeExamples
        - Example Processing code that generates plottable PDFs.
      
 
      - 
        Let’s make map -
        Web-based tool to export an SVG map from Mapzen tiles.
      
 
      - 
        SuperformulaSVG for web
        - A generative line art web app.
      
 
      - 
        scribbleplot -
        Scribbly image transformations in Processing.
      
 
      - 
        Maker.js - Library for creating 2D
        vector drawings for CNC and laser cutter machines.
      
 
      - 
        Turtletoy - Browser-based JavaScript
        turtle graphics API with SVG export.
      
 
      - 
        cozyvec -
        Web/Standalone terminal environment for plotter art and tweet plots.
      
 
      - 
        makio135/plotter
        - An Observable notebook
        collection full of plotter-oriented work.
      
 
      - 
        PlotterFun - Browser-based
        Image to SVG converter similar to SquiggleDraw.
      
 
    
    Vector Utilities
    Tools to manipulate and optimize vector-based file formats.
    
      - 
        svgsort - Path
        planning for plotting SVG files, reduces time spent moving with the pen
        up.
      
 
      - 
        svgo - Node.js-based tool for
        optimizing SVG files.
      
 
      - 
        Polargraph Optimizer
        - Optimize drawing plan for a polargraph.
      
 
      - 
        penkit-optimize
        - An SVG optimizer that uses a vehicle routing solver to minimize plot
        time.
      
 
      - 
        svg-crowbar -
        Chrome-only bookmarklet for extracting SVG from an HTML document.
      
 
      - 
        vpype - Plotter-focused
        Python-based CLI utility for generating and manipulating SVGs, including
        scaling and optimizing paths.
      
 
    
    Fonts
    Single-line vector fonts or “engraving fonts”.
    
    Inspiration and Instruction
    Blog posts, articles, tutorials, galleries, videos, et cetera.
    
    Manuals and Ephemera
    
      Scanned plotter manuals and marketing ephemera from the
      Internet Archive
    
    Manuals
    
    Ephemera
    
    
    Where to find other plotter and drawbot friends.
    
    Plotter Art For Sale
    
    Other Awesomes
    
    License
    
      
    
    
      To the extent possible under law,
      Brian Boucheron has waived all
      copyright and related or neighboring rights to this work.